package org.monster.boot;

import org.monster.app.AppContext;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Dos容器代理
 * 在dos命令放入容器之前，对其进行验证
 *
 * @author Monster
 */
public class DosContainerProxy implements Container, Proxy {

    /**
     * 日志器
     */
    private static final Logger logger = Logger.getLogger(DosContainerProxy.class.getName());
    /**
     * dos容器
     */
    private static final Container container = DosContainer.getInstance();
    /**
     * 应用上下文
     */
    private AppContext context;
    /**
     * dos验证
     */
    private DosValidate dosValidate;

    /**
     * 构造方法
     *
     * @param context     应用上下文
     * @param dosValidate dos验证
     */
    public DosContainerProxy(AppContext context, DosValidate dosValidate) {
        this.context = context;
        this.dosValidate = dosValidate;
    }

    /**
     * 放入
     */
    @Override
    public void put(String dosCommand) {
        if (before(dosCommand) != null) {
            String command = context.replace(dosCommand);
            container.put(command);
        } else {
            logger.log(Level.INFO, null, "Dos Command Error!");
        }
    }

    /**
     * 之前
     *
     * @param dosCommand dos命令
     * @return dos命令
     */
    public String before(String dosCommand) {
        return dosValidate.validate(dosCommand);
    }

    /**
     * 之后
     *
     * @param dosCommand dos命令
     * @return dos命令
     */
    @Override
    public String after(String dosCommand) {
        return null;
    }

    /**
     * 获取
     *
     * @return dos命令
     */
    @Override
    public String get() {
        return null;
    }
}
